import Mock, { Random } from 'mockjs';

// 设置相应时间 单位ms，可以使具体时间，或者时间区间
Mock.setup({
	// timeout：500
	timeout: '1000-3000'
});

// 模拟api接口
Mock.mock('/mock/getData', 'get', {
	status: 200,
	message: '获取数据成功',
	// ‘|’后面表示生成几次数据
	'data|5-10': [{
		// @表示mock语法
		groupId: '@increment(1)', // increment 表示自增，括号参数表示步长
		'id|+1': 0, // |+1 也表示自增，参数表示起始数
		// groupName: '@word(2, 8),'
		groupName: '@cword(2, 8)', // @cword表示汉字，word表示英文字符，括号参数表示长度
		count: '@natural(100, 999)', // natural 表示自然数，括号参数表示取值区间
		color: '@color', // color表示颜色
		email: '@email', // email邮箱
		img: '@dataImage(78x78)' // dataImage 表示base64的图片格式; image得到url地址的图片，但是不稳定，容易加载不出来，推荐使用base64
		// img1: '@image(78x78)'
	}]
});

// 函数式， 通过post传递过来的参数，都可在参数option中查看
Mock.mock('/mock/postData', 'post', function(option) {
	console.log(option);
	return Mock.mock({
		status: 200,
		message: '获取数据成功',
		// ‘|’后面表示生成几次数据
		'data|5-10': [{
			// @表示mock语法
			groupId: '@increment(1)', // increment 表示自增，括号参数表示步长
			'id|+1': 100, // |+1 也表示自增，参数表示起始数
			// groupName: '@word(2, 8),'
			groupName: '@cword(2, 8)', // @cword表示汉字，word表示英文字符，括号参数表示长度
			count: '@natural(100, 999)', // natural 表示自然数，括号参数表示取值区间
			color: '@color', // color表示颜色
			email: '@email', // email邮箱
			img: '@dataImage(78x78)' // dataImage 表示base64的图片格式; image得到url地址的图片，但是不稳定，容易加载不出来，推荐使用base64
			// img1: '@image(78x78)'
		}]
	});
});

// 自定义随机数组，定义后就能在后面使用 @groupNameList获得这个数组中的随机一个
Random.extend({
	groupNameList: function() {
		const nameArr = ['成都', '德阳', '绵阳', '广安', '资阳', '自贡', '内江'];
		return this.pick(nameArr);
	}
});

// 请求url带参数的时候,如  /mock/getDataUrl/:id
Mock.mock(/\/mock\/getDataUrl/, 'get', function(option) {
	let id = /\/mock\/getDataUrl\/(\d+)/.exec(option.url);
	// 拿到参数
	console.log(id[1]);
	return Mock.mock({
		status: 200,
		message: '获取数据成功',
		data: {
			'id|+1': 0,
			name: '@cword(2, 4)',
			groupName: '@groupNameList' // 自定义随机数组，通过Random.extend()函数添加
		}
	});
});
